5047
22297
Voglio eliminare una filiale sia in locale che in remoto.
Tentativi di eliminazione di un ramo remoto non riusciti
$ git branch -d remotes / origin / bugfix
errore: ramo "remotes / origin / bugfix" non trovato.
$ git branch -d origin / bugfix
errore: branch "origin / bugfix" non trovato.
$ git branch -rd origin / bugfix
Eliminata origine / correzione bug del ramo remoto (era 2a14ef7).
$ git push
tutto aggiornato
$ git pull
Da github.com:gituser/gitproject
* [nuovo ramo] bugfix -> origin / bugfix
Già aggiornato.
Cosa devo fare di diverso per eliminare con successo il ramo remotes / origin / bugfix sia in locale che in remoto? 
1
2
Il prossimo
Sintesi
$ git push -d  
$ git branch -d 
Notare che nella maggior parte dei casi il nome remoto è origin.
In tal caso dovrai usare il comando in questo modo.
$ git push -d origin 
Elimina filiale locale
Per eliminare il ramo locale utilizzare uno dei seguenti:
$ git branch -d branch_name
$ git branch -D branch_name
Nota: l'opzione -d è un alias per --delete, che cancella il ramo solo se è già stato completamente unito nel suo ramo a monte. Puoi anche usare -D, che è un alias per --delete --force, che elimina il ramo "indipendentemente dal suo stato unito". [Fonte: man git-branch]
Nota anche che git branch -d branch_name fallirà se lo sei attualmente
nel ramo che desideri rimuovere. Il messaggio inizia con
errore: impossibile eliminare il ramo "branch_name". Se è così, prima cambia
a qualche altro ramo, ad esempio: git checkout master.
Elimina filiale remota [Aggiornato l'8 settembre 2017]
A partire da Git v1.7.0, puoi eliminare un ramo remoto utilizzando
$ git push  --delete 
che potrebbe essere più facile da ricordare di
$ git push : 
che è stato aggiunto in Git v1.5.0 "per eliminare un ramo remoto o un tag."
A partire da Git v2.8.0 puoi anche usare git push con l'opzione -d come alias per --delete.
Pertanto, la versione di Git installata determinerà se è necessario utilizzare la sintassi più semplice o più complessa.
Elimina filiale remota [risposta originale del 5 gennaio 2010]
Dal capitolo 3 di Pro Git di Scott Chacon:
Eliminazione di rami remoti
Supponiamo che tu abbia finito con un ramo remoto, ad esempio tu e i tuoi collaboratori avete finito con una funzione e l'avete unita al ramo principale del telecomando (o qualsiasi ramo in cui si trova la vostra linea di codice stabile). Puoi eliminare un ramo remoto usando la sintassi piuttosto ottusa git push [remotename]: [branch]. Se desideri eliminare il ramo di correzione del server dal server, esegui quanto segue:
$ git push origin: serverfix
A git@github.com: schacon / simplegit.git
- [cancellato] serverfix
Boom. Niente più rami sul tuo server. Potresti voler ascoltare questa pagina, perché avrai bisogno di quel comando e probabilmente dimenticherai la sintassi. Un modo per ricordare questo comando è richiamare la sintassi git push [remotename] [localbranch]: [remotebranch] che abbiamo esaminato un po 'prima. Se lasci la parte [ramo locale], in pratica stai dicendo: "Non prendere nulla dalla mia parte e fallo essere [ramo remoto]".
Ho rilasciato git push origin: bugfix e ha funzionato magnificamente. Scott Chacon aveva ragione: vorrei ascoltare quella pagina (o virtualmente l'orecchio del cane rispondendo su Stack Overflow).
Quindi dovresti eseguirlo su altre macchine
# Recupera le modifiche da tutti i telecomandi ed elimina localmente
# rami / tag eliminati da remoto ecc
# --prune farà il lavoro: -;
git fetch --all --prune
per propagare le modifiche.
|
La risposta di Matthew è ottima per rimuovere rami remoti e apprezzo anche la spiegazione, ma per fare una semplice distinzione tra i due comandi:
Per rimuovere un ramo locale dalla tua macchina:
git branch -d {the_local_branch} (usa -D invece per forzare l'eliminazione del ramo senza controllare lo stato unito)
Per rimuovere un ramo remoto dal server:
git push origin --delete {the_remote_branch}
Riferimento: Git: eliminare un ramo (locale o remoto)
|
Le risposte brevi
Se desideri spiegazioni più dettagliate dei seguenti comandi, consulta le risposte lunghe nella sezione successiva.
Eliminazione di un ramo remoto
git push origin --delete  # Git versione 1.7.0 o successiva
git push origin -d  # Versione più breve (Git 1.7.0 o più recente)
git push origin:  # Versioni di Git precedenti alla 1.7.0
Eliminazione di una filiale locale
git branch --delete 
git branch -d  # Versione più breve
git branch -D  # Forza l'eliminazione dei rami non uniti
Eliminazione di un ramo di monitoraggio remoto locale
git branch --delete --remotes  / 
git branch -dr  /  # Più corto
git fetch  --prune # Elimina più rami obsoleti di tracciamento remoto
git fetch  -p # Più breve
La risposta lunga: ci sono tre diversi rami da eliminare!
Quando hai a che fare con l'eliminazione di rami sia in locale che in remoto, tieni presente che sono coinvolti tre diversi rami:
La filiale locale X.
Il ramo di origine remota X.
Il ramo di localizzazione remota locale origin / X che tiene traccia del ramo remoto X.
Il poster originale utilizzato:
git branch -rd origin / bugfix
Che ha solo cancellato l'origine / bugfix del ramo di tracciamento remoto locale e non l'effettivo bugfix del ramo remoto su origin.
Per eliminare quel ramo remoto effettivo, è necessario
git push origin - elimina bugfix
Dettagli aggiuntivi
Le sezioni seguenti descrivono dettagli aggiuntivi da considerare quando si eliminano i rami di monitoraggio remoto e remoto.
La spinta per eliminare i rami remoti rimuove anche i rami di monitoraggio remoto
Notare che l'eliminazione del ramo remoto X dalla riga di comandol'uso di git push rimuoverà anche il ramo di tracciamento remoto locale origin / X, quindi non è necessario eliminare il ramo di tracciamento remoto obsoleto con git fetch --prune o git fetch -p. Tuttavia, non sarebbe male se lo facessi comunque.
È possibile verificare che anche l'origine / X del ramo di monitoraggio remoto sia stato eliminato eseguendo quanto segue:
# Visualizza solo i rami di monitoraggio remoto
git branch --remotes
git branch -r
# Visualizza sia i rami strettamente locali che quelli di tracciamento remoto
git branch --all
git branch -a
Eliminazione del ramo obsoleto di localizzazione remota origin / X
Se non hai eliminato il tuo ramo remoto X dalla riga di comando (come sopra), il tuo repository locale conterrà ancora (un ramo di tracciamento remoto ora obsoleto) origin / X. Ciò può accadere se hai eliminato un ramo remoto direttamente tramite l'interfaccia web di GitHub, ad esempio.
Un modo tipico per rimuovere questi rami obsoleti di tracciamento remoto (dalla versione 1.6.6 di Git) è semplicemente eseguire git fetch con --prune o -p più breve. Si noti che questo rimuove tutti i rami di localizzazione remota locali obsoleti per tutti i rami remoti che non esistono più sul telecomando:
git fetch origin --prune
git fetch origin -p # Più breve
Ecco la citazione pertinente dalle note di rilascio 1.6.6 (enfasi mia):
"git fetch" ha appreso --all e --multipleoptions, da cui eseguire fetch
molti repository e l'opzione --prune per rimuovere il monitoraggio remoto
rami che sono diventati stantii. Questi fanno "git remote update" e "git
remote prune "meno necessario (non esiste alcun piano per rimuovere" remote
update "né" remote prune ", però).
Alternativa alla potatura automatica di cui sopra per rami obsoleti di monitoraggio remoto
In alternativa, invece di eliminare i rami obsoleti di localizzazione remota locale tramite git fetch -p, puoi evitare di eseguire l'operazione di rete aggiuntiva semplicemente rimuovendo manualmente i rami con i flag --remote o -r:
git branch --delete --remotes origin / X
git branch -dr origin / X # Shorter
Guarda anche
git-branch (1) Pagina del manuale.
git-fetch (1) Pagina manuale.
Pro Git § 3.5 Git Branching - Rami remoti.
|
Passaggi per eliminare un ramo:
Per eliminare il ramo remoto:
git push origin --delete 
Per eliminare il ramo locale, hai tre modi:
1: git branch -D 
2: git branch --delete --force  # Uguale a -D
3: git branch --delete  # Errore durante l'unmerge
Spiega: OK, spiega solo cosa sta succedendo qui!
Esegui semplicemente git push origin --delete per eliminare solo il tuo ramo remoto, aggiungi il nome del ramo alla fine e questo lo eliminerà e lo invierà a remoto allo stesso tempo ...
Inoltre, git branch -D, che elimina semplicemente solo il ramo locale! ...
-D sta per --delete --force che cancellerà il ramo anche se non è unito (forza cancellazione), ma puoi anche usare -d che sta per --delete che genera un errore rispettivo dello stato di unione del ramo ...
Creo anche l'immagine qui sotto per mostrare i passaggi:
|
È inoltre possibile utilizzare quanto segue per eliminare il ramo remoto
git push - elimina origin serverfix
Che fa la stessa cosa di
git push origine: serverfix
ma potrebbe essere più facile da ricordare.
|
Suggerimento: quando elimini i rami utilizzando
git branch -d  # Elimina il branch locale
o
git push origin:  # Elimina il ramo remoto
vengono cancellati solo i riferimenti. Anche se il ramo viene effettivamente rimosso sul telecomando, i riferimenti ad esso esistono ancora nei repository locali dei membri del team. Ciò significa che per gli altri membri del team i rami eliminati sono ancora visibili quando eseguono un ramo git -a.
Per risolvere questo problema, i membri del tuo team possono eliminare i rami eliminati con
git remote prune 
Questo è tipicamente git remote prune origin.
|
Se desideri eliminare un ramo, effettua prima il checkout al ramo diverso da quello da eliminare.
git checkout other_than_branch_to_be_deleted
Eliminazione del ramo locale:
git branch -D branch_to_be_deleted
Eliminazione del ramo remoto:
git push origin --delete branch_to_be_deleted
|
git branch -D 
git branch -D -r origin / 
git push origin: 
|
È semplice: esegui il seguente comando:
Per eliminare un ramo Git sia in locale che in remoto, elimina prima il ramo locale utilizzando questo comando:
git branch -d esempio
(Qui l'esempio è il nome del ramo.)
Successivamente, elimina il ramo remoto usando questo comando:
git push origin: esempio
|
È molto semplice:
Per eliminare il ramo remoto
git push -d origin 
O
git push origin: 
Per eliminare forzatamente il ramo locale
git branch -D 
|
Un altro approccio è:
git push --prune origin
ATTENZIONE: questo eliminerà tutti i rami remoti che non esistono localmente. O più esaurientemente,
git push --mirror
renderà effettivamente il repository remoto simile alla copia locale del repository (le testine locali, i telecomandi e i tag sono specchiati su remoto).
|
Uso quanto segue nelle mie impostazioni di Bash:
alias git-shoot = "git pushorigin --delete "
Quindi puoi chiamare:
git-shoot branchname
|
Elimina localmente:
Per eliminare un ramo locale, puoi utilizzare:
git branch -d 
Per eliminare forzatamente un ramo, usa -D invece di -d.
git branch -D 
Elimina da remoto:
Ci sono due opzioni:
git push origine: branchname
git push origin --delete branchname
Ti suggerirei di utilizzare il secondo modo in quanto è più intuitivo.
|
Da gennaio 2013, GitHub ha incluso un pulsante Elimina ramo accanto a ciascun ramo nella pagina "Rami".
Post del blog pertinente: creare ed eliminare rami
|
Se desideri completare entrambi questi passaggi con un singolo comando, puoi creare un alias aggiungendo quanto segue al tuo ~ / .gitconfig:
[alias]
rmbranch = "! f () {git branch -d $ {1} && git push origin --delete $ {1};}; f"
In alternativa, puoi aggiungerlo alla configurazione globale dalla riga di comando utilizzando
git config --global alias.rmbranch \
'! f () {git branch -d $ {1} && git push origin --delete $ {1}; }; f '
NOTA: se si utilizza -d (d minuscola), il ramo verrà eliminato solo se è stato unito. Per forzare la cancellazione, dovrai usare -D (D maiuscola).
|
Per eliminare la tua filiale in locale e da remoto
Checkout to master branch - git checkout master
Elimina il tuo ramo remoto - git push origin --delete 
Elimina il tuo ramo locale - git branch --delete 
|
Puoi anche farlo usando git remote prune origin
$ git remote prune origin
Origine della potatura
URL: git@example.com/yourrepo.git
* [potata] origine / alcuni rami
Elimina ed elimina i rami di tracciamento remoto da un elenco di git branch -r.
|
Oltre alle altre risposte, utilizzo spesso lo strumento git_remote_branch. È un'installazione extra, ma ti offre un modo conveniente per interagire con i rami remoti. In questo caso, per eliminare:
grb elimina ramo
Trovo che uso anche i comandi di pubblicazione e traccia abbastanza spesso.
|
Un comando di una riga per eliminare sia locale che remoto:
D = nome del ramo; ramo git -D $ D; git push origine: $ D
Oppure aggiungi l'alias di seguito al tuo file ~ / .gitconfig. Utilizzo: git kill nome-ramo
[alias]
kill = "! f () {git branch -D \" $ 1 \ "; git push origin --delete \" $ 1 \ ";}; f"
|
Eliminazione di rami
Supponiamo che il nostro lavoro sul ramo "contact-form" sia terminato e lo abbiamo già integrato in "master". Dato che non ne abbiamo più bisogno, possiamo eliminarlo (localmente):
$ git branch -d modulo di contatto
E per eliminare il ramo remoto:
git push origin --delete contact-form
|
Elimina ramo remoto
git push origin: 
Elimina filiale locale
git branch -D 
Elimina i passaggi del ramo locale:
checkout in un'altra filiale
eliminare il ramo locale
|
Dì semplicemente:
git branch -d 
git push origin: 
|
git push origin --delete 
è più facile da ricordare di
git push origine: branchName
|
Ora puoi farlo con l'applicazione GitHub Desktop.
Dopo aver avviato l'applicazione
Fare clic sul progetto contenente il ramo
Passa al ramo che desideri eliminare
Dal menu "Ramo", seleziona "Annulla pubblicazione ..." per eliminare il ramo dai server GitHub.
Dal menu "Branch", seleziona "Elimina" branch_name "..." per eliminare il ramo dalla tua macchina locale (AKA la macchina su cui stai attualmente lavorando)
|
Per eliminare localmente - (normale)
git branch -d my_branch
Se il tuo ramo è in fase di rebase / unione e ciò non è stato fatto correttamente, significa che riceverai un errore, Rebase / Merge in corso, quindi in tal caso, non sarai in grado di eliminare il tuo ramo.
Quindi o devi risolvere il rebasing / merging. Altrimenti, puoi forzare l'eliminazione utilizzando,
git branch -D my_branch
Per eliminare in remoto:
git push - elimina origin my_branch
Puoi fare lo stesso usando:
git push origin: my_branch # Facili da ricordare, entrambi faranno lo stesso.
Rappresentazione grafica:
|
Questo non funzionerà se hai un tag con lo stesso nome del ramo sul telecomando:
$ git push origin: nome-ramo o tag
errore: dst refspec branch-or-tag-name corrisponde a più di uno.
errore: impossibile inviare alcuni riferimenti a "git@github.com: SomeName / some-repo.git"
In tal caso è necessario specificare che si desidera eliminare il ramo, non il tag:
git push origin: refs / heads / branch-or-tag-name
Allo stesso modo, per eliminare il tag al posto del ramo che useresti:
git push origin: refs / tags / branch-or-tag-name
|
Molte delle altre risposte porteranno a errori / avvisi. Questo approccio è relativamente infallibile anche se potresti comunque aver bisogno di git branch -D branch_to_delete se non è completamente unito a some_other_branch, per esempio.
git checkout some_other_branch
git push origin: branch_to_delete
git branch -d branch_to_delete
L'eliminazione remota non è necessaria se hai eliminato il ramo remoto. Viene utilizzato solo per ottenere i telecomandi più aggiornati disponibili su un repository che stai monitorando. Ho osservato che git fetch aggiungerà telecomandi, non li rimuoverà. Ecco un esempio di quando git remote prune origin farà effettivamente qualcosa:
Utente Aesegue i passaggi precedenti. L'utente B eseguirà i seguenti comandi per visualizzare i rami remoti più aggiornati:
git fetch
git remote prune origin
git branch -r
|
Mi sono stufato di cercare su Google questa risposta, quindi ho adottato un approccio simile alla risposta che crizCraig ha pubblicato in precedenza.
Ho aggiunto quanto segue al mio profilo Bash:
function gitdelete () {
git push origin - elimina $ 1
ramo git -D $ 1
}
Quindi ogni volta che ho finito con un ramo (fuso nel master, ad esempio) eseguo quanto segue nel mio terminale:
gitdelete nome-ramo
... che quindi elimina il nome del mio ramo dall'origine e localmente.
|
Prima di eseguire
git branch --delete 
assicurati di determinare prima qual è il nome esatto del ramo remoto eseguendo:
git ls-remote
Questo ti dirà cosa inserire esattamente per il valore . (il ramo distingue tra maiuscole e minuscole!)
|
Uso:
git push origin: bugfix # Elimina il ramo remoto
git branch -d bugfix # Deve eliminare manualmente il ramo locale
Se sei sicuro di volerlo eliminare, esegui
git branch -D bugfix
Ora per ripulire i rami remoti cancellati esegui
git remote prune origin
|
1
2
Il prossimo
Domanda molto attiva. Guadagna 10 punti reputazione per rispondere a questa domanda. Il requisito di reputazione aiuta a proteggere questa domanda dallo spam e dalle attività di mancata risposta.
Non è la risposta che stai cercando? Sfoglia altre domande contrassegnate con git version-control git-branch git-push git-remote o fai la tua domanda.